Cấu Hình Giao Diện
Trong v8, CMS đã cung cấp sẵn một hệ thống Theme Options mạnh mẽ tại đường dẫn Admin → Giao diện → Cấu hình. Hệ thống này được xây dựng trên Class SkillDo\Cms\Support\ThemeOption.
Theme Options cho phép admin tùy chỉnh giao diện website qua form UI. Dữ liệu lưu vào database qua Option::get/update, dùng trong theme để build CSS/layout.
1. Thêm Nhóm Cấu Hình Chính (Group)
Một Group đại diện cho một Tab bấm lớn bên trái màn hình Cấu hình Theme.
Bạn sử dụng hàm tĩnh ThemeOption::addGroup() kết hợp với Hook theme_custom_options để đăng ký Tab này.
Đăng ký trong file bootstrap của theme (theme-store dùng bootstrap/options.php) hoặc trong ServiceProvider::boot() của plugin:
use SkillDo\Cms\Support\ThemeOption;
use SkillDo\Form\Form;
add_action('theme_custom_options', function () {
// Tạo 1 Tab mới tên ID là 'general'
ThemeOption::addGroup('general', [
'position' => 10, // Thứ tự sắp xếp (số nhỏ xếp lên trên)
'label' => 'Cấu hình chung',
'icon' => '<i class="fa-light fa-screwdriver-wrench"></i>',
'root' => false, // Set true nếu chỉ cấp quyền Super Admin mới thấy Tab
// Khai báo giao diện các Input trong Panel
'form' => function(Form $form) {
$form->text('general_label', ['label' => 'Tên website (shop)']);
$form->color('theme_color', ['label' => 'Màu chủ đề']);
$form->background('bodyBg', ['label' => 'Nền website']);
}
]);
});
Param $args | Type | Mô tả | Default |
|---|---|---|---|
position | int | Thứ tự sắp xếp (thấp = trước) | 0 |
label | string | Tên nhóm hiển thị trong tab | bắt buộc |
icon | string | HTML icon đại diện | '' |
form | Form|callable | Form object hoặc closure trả về Form | null |
root | bool | Chỉ hiển thị với tài khoản root | false |
2. Thêm Nhóm Con (Group Sub)
Nếu trong 1 Tab lớn general có quá nhiều chức năng, bạn có thể phân rã thành nhóm Sub (các Box nhỏ xếp trong lưới màn hình bên phải).
Sử dụng hàm ThemeOption::addGroupSub().
add_action('theme_custom_options', function () {
// Thêm nhóm Sub 'FOOTER BOTTOM' chui vào bên trong TAB Tên 'general'
ThemeOption::addGroupSub('general', 'general-bottom', [
'label' => 'Cấu Hình Footer Dưới Cùng',
'form' => function(Form $form) {
// Hàm switch() tạo ra Nút Bật/Tắt công tắc
$form->switch('footer_bottom_public', [
'label' => 'Bật hiển thị footer',
'start' => 4,
]);
// Hàm color() tạo ô chọn màu
$form->color('footer_bottom_bg_color', ['label' => 'Màu Nền footer v8', 'start' => 4]);
$form->color('footer_bottom_text_color', ['label' => 'Màu chữ footer', 'start' => 4]);
}
]);
});